using System;
using System.ComponentModel;
using Islamic_influence_in_Venetian_cuture;
using Islamic_influence_in_Venetian_cuture.LangResources.SpecificLang;

namespace Islamic_influence_in_Venetian_cuture.LangResources
{
    public class Lang : INotifyPropertyChanged
    {
        private static readonly System.Globalization.CultureInfo italian = new System.Globalization.CultureInfo("it-IT");
        private static readonly System.Globalization.CultureInfo english = new System.Globalization.CultureInfo("en-US");

        private static Cultures _currentCulture;
        public static Cultures CurrentCulture
        {
            get { return _currentCulture; }
            set
            {
                _currentCulture = value;

                var culture = value == Cultures.Italiano ? italian : english;
                System.Threading.Thread.CurrentThread.CurrentCulture = culture;
                System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
                if (CultureChanged != null)
                    CultureChanged();
            }
        }
        private static event Action CultureChanged;
        public Lang() { CultureChanged += RaisePropertyChanged; }
        public Lang(Cultures new_c)
        {
            CurrentCulture = new_c;
            CultureChanged += RaisePropertyChanged;
        }

        public Cultures Culture { get { return CurrentCulture; } }

        #region LangProperties

        public System.String ArtContent00
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent00;
                    case Cultures.Italiano: return Lang_it.ArtContent00;
                    case Cultures.Arabic: return Lang_ar.ArtContent00.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent00.reverse();
                    default: return Lang_en.ArtContent00;
                }
            }
        }
        public System.String ArtContent01
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent01;
                    case Cultures.Italiano: return Lang_it.ArtContent01;
                    case Cultures.Arabic: return Lang_ar.ArtContent01.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent01.reverse();
                    default: return Lang_en.ArtContent01;
                }
            }
        }
        public System.String ArtContent02
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent02;
                    case Cultures.Italiano: return Lang_it.ArtContent02;
                    case Cultures.Arabic: return Lang_ar.ArtContent02.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent02.reverse();
                    default: return Lang_en.ArtContent02;
                }
            }
        }
        public System.String ArtContent03
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent03;
                    case Cultures.Italiano: return Lang_it.ArtContent03;
                    case Cultures.Arabic: return Lang_ar.ArtContent03.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent03.reverse();
                    default: return Lang_en.ArtContent03;
                }
            }
        }
        public System.String ArtContent10
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent10;
                    case Cultures.Italiano: return Lang_it.ArtContent10;
                    case Cultures.Arabic: return Lang_ar.ArtContent10.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent10.reverse();
                    default: return Lang_en.ArtContent10;
                }
            }
        }
        public System.String ArtContent11
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent11;
                    case Cultures.Italiano: return Lang_it.ArtContent11;
                    case Cultures.Arabic: return Lang_ar.ArtContent11.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent11.reverse();
                    default: return Lang_en.ArtContent11;
                }
            }
        }
        public System.String ArtContent20
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent20;
                    case Cultures.Italiano: return Lang_it.ArtContent20;
                    case Cultures.Arabic: return Lang_ar.ArtContent20.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent20.reverse();
                    default: return Lang_en.ArtContent20;
                }
            }
        }
        public System.String ArtContent21
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent21;
                    case Cultures.Italiano: return Lang_it.ArtContent21;
                    case Cultures.Arabic: return Lang_ar.ArtContent21.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent21.reverse();
                    default: return Lang_en.ArtContent21;
                }
            }
        }
        public System.String ArtContent30
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent30;
                    case Cultures.Italiano: return Lang_it.ArtContent30;
                    case Cultures.Arabic: return Lang_ar.ArtContent30.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent30.reverse();
                    default: return Lang_en.ArtContent30;
                }
            }
        }
        public System.String ArtContent31
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtContent31;
                    case Cultures.Italiano: return Lang_it.ArtContent31;
                    case Cultures.Arabic: return Lang_ar.ArtContent31.reverse();
                    case Cultures.Persian: return Lang_fa.ArtContent31.reverse();
                    default: return Lang_en.ArtContent31;
                }
            }
        }
        public System.String ArtInfluence0
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtInfluence0;
                    case Cultures.Italiano: return Lang_it.ArtInfluence0;
                    case Cultures.Arabic: return Lang_ar.ArtInfluence0.reverse();
                    case Cultures.Persian: return Lang_fa.ArtInfluence0.reverse();
                    default: return Lang_en.ArtInfluence0;
                }
            }
        }
        public System.String ArtInfluence1
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtInfluence1;
                    case Cultures.Italiano: return Lang_it.ArtInfluence1;
                    case Cultures.Arabic: return Lang_ar.ArtInfluence1.reverse();
                    case Cultures.Persian: return Lang_fa.ArtInfluence1.reverse();
                    default: return Lang_en.ArtInfluence1;
                }
            }
        }
        public System.String ArtInfluence2
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtInfluence2;
                    case Cultures.Italiano: return Lang_it.ArtInfluence2;
                    case Cultures.Arabic: return Lang_ar.ArtInfluence2.reverse();
                    case Cultures.Persian: return Lang_fa.ArtInfluence2.reverse();
                    default: return Lang_en.ArtInfluence2;
                }
            }
        }
        public System.String ArtInfluence3
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ArtInfluence3;
                    case Cultures.Italiano: return Lang_it.ArtInfluence3;
                    case Cultures.Arabic: return Lang_ar.ArtInfluence3.reverse();
                    case Cultures.Persian: return Lang_fa.ArtInfluence3.reverse();
                    default: return Lang_en.ArtInfluence3;
                }
            }
        }
        public System.String ContentArt00
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt00;
                    case Cultures.Italiano: return Lang_it.ContentArt00;
                    case Cultures.Arabic: return Lang_ar.ContentArt00.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt00.reverse();
                    default: return Lang_en.ContentArt00;
                }
            }
        }
        public System.String ContentArt01
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt01;
                    case Cultures.Italiano: return Lang_it.ContentArt01;
                    case Cultures.Arabic: return Lang_ar.ContentArt01.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt01.reverse();
                    default: return Lang_en.ContentArt01;
                }
            }
        }
        public System.String ContentArt02
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt02;
                    case Cultures.Italiano: return Lang_it.ContentArt02;
                    case Cultures.Arabic: return Lang_ar.ContentArt02.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt02.reverse();
                    default: return Lang_en.ContentArt02;
                }
            }
        }
        public System.String ContentArt03
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt03;
                    case Cultures.Italiano: return Lang_it.ContentArt03;
                    case Cultures.Arabic: return Lang_ar.ContentArt03.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt03.reverse();
                    default: return Lang_en.ContentArt03;
                }
            }
        }
        public System.String ContentArt10
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt10;
                    case Cultures.Italiano: return Lang_it.ContentArt10;
                    case Cultures.Arabic: return Lang_ar.ContentArt10.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt10.reverse();
                    default: return Lang_en.ContentArt10;
                }
            }
        }
        public System.String ContentArt11
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt11;
                    case Cultures.Italiano: return Lang_it.ContentArt11;
                    case Cultures.Arabic: return Lang_ar.ContentArt11.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt11.reverse();
                    default: return Lang_en.ContentArt11;
                }
            }
        }
        public System.String ContentArt20
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt20;
                    case Cultures.Italiano: return Lang_it.ContentArt20;
                    case Cultures.Arabic: return Lang_ar.ContentArt20.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt20.reverse();
                    default: return Lang_en.ContentArt20;
                }
            }
        }
        public System.String ContentArt21
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt21;
                    case Cultures.Italiano: return Lang_it.ContentArt21;
                    case Cultures.Arabic: return Lang_ar.ContentArt21.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt21.reverse();
                    default: return Lang_en.ContentArt21;
                }
            }
        }
        public System.String ContentArt30
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt30;
                    case Cultures.Italiano: return Lang_it.ContentArt30;
                    case Cultures.Arabic: return Lang_ar.ContentArt30.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt30.reverse();
                    default: return Lang_en.ContentArt30;
                }
            }
        }
        public System.String ContentArt31
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ContentArt31;
                    case Cultures.Italiano: return Lang_it.ContentArt31;
                    case Cultures.Arabic: return Lang_ar.ContentArt31.reverse();
                    case Cultures.Persian: return Lang_fa.ContentArt31.reverse();
                    default: return Lang_en.ContentArt31;
                }
            }
        }
        public System.String Description
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Description;
                    case Cultures.Italiano: return Lang_it.Description;
                    case Cultures.Arabic: return Lang_ar.Description.reverse();
                    case Cultures.Persian: return Lang_fa.Description.reverse();
                    default: return Lang_en.Description;
                }
            }
        }
        public System.String Drive
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Drive;
                    case Cultures.Italiano: return Lang_it.Drive;
                    case Cultures.Arabic: return Lang_ar.Drive.reverse();
                    case Cultures.Persian: return Lang_fa.Drive.reverse();
                    default: return Lang_en.Drive;
                }
            }
        }
        public System.String GetDirections
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.GetDirections;
                    case Cultures.Italiano: return Lang_it.GetDirections;
                    case Cultures.Arabic: return Lang_ar.GetDirections.reverse();
                    case Cultures.Persian: return Lang_fa.GetDirections.reverse();
                    default: return Lang_en.GetDirections;
                }
            }
        }
        public System.String ImageDescription00
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription00;
                    case Cultures.Italiano: return Lang_it.ImageDescription00;
                    case Cultures.Arabic: return Lang_ar.ImageDescription00.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription00.reverse();
                    default: return Lang_en.ImageDescription00;
                }
            }
        }
        public System.String ImageDescription01
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription01;
                    case Cultures.Italiano: return Lang_it.ImageDescription01;
                    case Cultures.Arabic: return Lang_ar.ImageDescription01.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription01.reverse();
                    default: return Lang_en.ImageDescription01;
                }
            }
        }
        public System.String ImageDescription02
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription02;
                    case Cultures.Italiano: return Lang_it.ImageDescription02;
                    case Cultures.Arabic: return Lang_ar.ImageDescription02.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription02.reverse();
                    default: return Lang_en.ImageDescription02;
                }
            }
        }
        public System.String ImageDescription03
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription03;
                    case Cultures.Italiano: return Lang_it.ImageDescription03;
                    case Cultures.Arabic: return Lang_ar.ImageDescription03.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription03.reverse();
                    default: return Lang_en.ImageDescription03;
                }
            }
        }
        public System.String ImageDescription10
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription10;
                    case Cultures.Italiano: return Lang_it.ImageDescription10;
                    case Cultures.Arabic: return Lang_ar.ImageDescription10.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription10.reverse();
                    default: return Lang_en.ImageDescription10;
                }
            }
        }
        public System.String ImageDescription11
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription11;
                    case Cultures.Italiano: return Lang_it.ImageDescription11;
                    case Cultures.Arabic: return Lang_ar.ImageDescription11.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription11.reverse();
                    default: return Lang_en.ImageDescription11;
                }
            }
        }
        public System.String ImageDescription20
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription20;
                    case Cultures.Italiano: return Lang_it.ImageDescription20;
                    case Cultures.Arabic: return Lang_ar.ImageDescription20.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription20.reverse();
                    default: return Lang_en.ImageDescription20;
                }
            }
        }
        public System.String ImageDescription21
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription21;
                    case Cultures.Italiano: return Lang_it.ImageDescription21;
                    case Cultures.Arabic: return Lang_ar.ImageDescription21.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription21.reverse();
                    default: return Lang_en.ImageDescription21;
                }
            }
        }
        public System.String ImageDescription30
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription30;
                    case Cultures.Italiano: return Lang_it.ImageDescription30;
                    case Cultures.Arabic: return Lang_ar.ImageDescription30.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription30.reverse();
                    default: return Lang_en.ImageDescription30;
                }
            }
        }
        public System.String ImageDescription31
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.ImageDescription31;
                    case Cultures.Italiano: return Lang_it.ImageDescription31;
                    case Cultures.Arabic: return Lang_ar.ImageDescription31.reverse();
                    case Cultures.Persian: return Lang_fa.ImageDescription31.reverse();
                    default: return Lang_en.ImageDescription31;
                }
            }
        }
        public System.String Images
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Images;
                    case Cultures.Italiano: return Lang_it.Images;
                    case Cultures.Arabic: return Lang_ar.Images.reverse();
                    case Cultures.Persian: return Lang_fa.Images.reverse();
                    default: return Lang_en.Images;
                }
            }
        }
        public System.String InfluenceMenu
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.InfluenceMenu;
                    case Cultures.Italiano: return Lang_it.InfluenceMenu;
                    case Cultures.Arabic: return Lang_ar.InfluenceMenu.reverse();
                    case Cultures.Persian: return Lang_fa.InfluenceMenu.reverse();
                    default: return Lang_en.InfluenceMenu;
                }
            }
        }
        public System.String IntroVideo
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.IntroVideo;
                    case Cultures.Italiano: return Lang_it.IntroVideo;
                    case Cultures.Arabic: return Lang_ar.IntroVideo.reverse();
                    case Cultures.Persian: return Lang_fa.IntroVideo.reverse();
                    default: return Lang_en.IntroVideo;
                }
            }
        }
        public System.String LangName
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.LangName;
                    case Cultures.Italiano: return Lang_it.LangName;
                    case Cultures.Arabic: return Lang_ar.LangName.reverse();
                    case Cultures.Persian: return Lang_fa.LangName.reverse();
                    default: return Lang_en.LangName;
                }
            }
        }
        public System.String LanguageSelection
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.LanguageSelection;
                    case Cultures.Italiano: return Lang_it.LanguageSelection;
                    case Cultures.Arabic: return Lang_ar.LanguageSelection.reverse();
                    case Cultures.Persian: return Lang_fa.LanguageSelection.reverse();
                    default: return Lang_en.LanguageSelection;
                }
            }
        }
        public System.String LearnWord
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.LearnWord;
                    case Cultures.Italiano: return Lang_it.LearnWord;
                    case Cultures.Arabic: return Lang_ar.LearnWord.reverse();
                    case Cultures.Persian: return Lang_fa.LearnWord.reverse();
                    default: return Lang_en.LearnWord;
                }
            }
        }
        public System.String MapTitle
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.MapTitle;
                    case Cultures.Italiano: return Lang_it.MapTitle;
                    case Cultures.Arabic: return Lang_ar.MapTitle.reverse();
                    case Cultures.Persian: return Lang_fa.MapTitle.reverse();
                    default: return Lang_en.MapTitle;
                }
            }
        }
        public System.String Menu
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Menu;
                    case Cultures.Italiano: return Lang_it.Menu;
                    case Cultures.Arabic: return Lang_ar.Menu.reverse();
                    case Cultures.Persian: return Lang_fa.Menu.reverse();
                    default: return Lang_en.Menu;
                }
            }
        }
        public System.String Skip
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Skip;
                    case Cultures.Italiano: return Lang_it.Skip;
                    case Cultures.Arabic: return Lang_ar.Skip.reverse();
                    case Cultures.Persian: return Lang_fa.Skip.reverse();
                    default: return Lang_en.Skip;
                }
            }
        }
        public System.String Title
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Title;
                    case Cultures.Italiano: return Lang_it.Title;
                    case Cultures.Arabic: return Lang_ar.Title.reverse();
                    case Cultures.Persian: return Lang_fa.Title.reverse();
                    default: return Lang_en.Title;
                }
            }
        }
        public System.String Walk
        {
            get
            {
                switch (CurrentCulture)
                {
                    case Cultures.English: return Lang_en.Walk;
                    case Cultures.Italiano: return Lang_it.Walk;
                    case Cultures.Arabic: return Lang_ar.Walk.reverse();
                    case Cultures.Persian: return Lang_fa.Walk.reverse();
                    default: return Lang_en.Walk;
                }
            }
        }

        #endregion

        private void RaisePropertyChanged()
        {
            if (PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs(""));
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }
}
